1. Field of the Invention
The present invention relates to a memory space management method, a data transfer method, and a computer device to be used in a distributed computer system in which a plurality of computer systems having virtual memory space management mechanisms are interconnected through a network such as an ATM (Asynchronous Transfer Mode) network.
2. Description of the Background Art
In recent years, due to improvements of the computer performance and advances of the network technology, there is a trend for a distributed processing in which a job is executed on a plurality of computers by dividing a series of processings and carrying out the processings in cooperation using communications among the computers.
There are many different schemes for realizing a distributed computer system by interconnecting a plurality of computers.
For instance, the VAX-Cluster of the DEC has been realized by a configuration in which a plurality of computers are directly interconnected through communication channels, and this configuration has been implemented by means of special dedicated hardware. In this configuration, in order to realize a high speed communication, it has been necessary to arrange computers in close proximity so as to make a distance between computers short.
Another known scheme for realizing a distributed computer system is a multi-processor system with a hardware configuration having a plurality of processors on a single system bus.
On the other hand, due to advances of the network technology in recent years, a high speed network device has been standardized and offered at an inexpensive price. A representative example of such a high speed network device is an ATM network.
The ATM network is implemented by high speed switches, and the communication protocols are defined so that this ATM network can be utilized in a wide variety of environments ranging from WAN environment to LAN environment. For example, the communication protocols are defined for a call set up, a flow control, a congestion control, an error detection, a QoS (Quality of Service) management, etc.
There is a scheme for realizing a distributed computer system by interconnecting existing computers through such a high speed network. In this scheme, there is an advantage in that the distributed computer system can be implemented inexpensively as there is no need to use any special hardware, unlike the other schemes using cluster connections or system bus.
However, when the computer system utilizes the ATM mentioned above in a conventional communication scheme, the following problem arises. Namely, in a conventional communication scheme, the communication is made by using a network protocol processing for a computer such as TCP/IP implemented in the OS (Operating System) which is a basic software of a computer, but when the ATM is utilized in this TCP/IP scheme in a conventional way, the ATM will be regarded as a mere data link connection so that the characteristic properties of the ATM cannot be taken advantageously. In addition, the communication protocol processing is carried out entirely within a computer, so that there is a drawback in that the processing is heavy and therefore the communication throughput is poor.
Next, a conventional virtual memory space management mechanism will be described.
In a conventional computer, a virtual address written in a program is translated into a physical address by an address translation mechanism such as a page table, and an access to a real memory in a computer is made by using a translated physical address.
In the following, a conventional address translation mechanism will be described.
In order to improve the utilization efficiency, a real memory in a computer is managed and used in units called pages, where each page is in a size of 512 to 8K bytes. An individual page is called a "page frame".
In order to make an access to a real memory, a "frame number" for specifying a page and an "offset" for specifying a position within a page are necessary. Consequently, a "physical address" used in making an access to a real memory is formed by a set of "frame number" and "offset".
Similarly, a "virtual address" can be divided into two portions of "virtual frame number" and "offset".
At a time of translation from a virtual address to a physical address, an offset portion of a virtual address is not translated, and is set to an offset portion of a physical address as it is.
As for a virtual frame number, a (page) frame number after translation is written in a page table entry corresponding to a virtual frame number in the page table, so that by referring to the page table, a virtual frame number can be translated into a (page) frame number and therefore a virtual address can be translated into a physical address.
Note that the translation from a virtual address to a physical address is carried out frequently at a time of program execution, but in a case where the page table to be used in this translation exists on a real memory, it is necessary to make an access to a real memory every time this translation is to be carried out, so that the translation becomes time-consuming.
In order to resolve this problem, there is a technique for storing a page table entry used in the translation from a virtual address to a physical address in a page table entry cache called TLB (Translation Lookaside Buffer) within a processor. In this technique, when it becomes necessary to translate the virtual address which is indicated by the same virtual frame, shortly after it was translated once, it suffices to make an access to a TLB which can be made much faster than an access to a real memory.
Next, a case of making an access to data belonging to a virtual frame which is not loaded in a real memory will be described.
Here, the page table entry has an "existence bit", where it indicates that a corresponding page frame is loaded on a real memory when this "existence bit" is 1. On the other hand, when the "existence bit" is 0, it indicates that a corresponding page frame is not loaded on a real memory.
When an access to a page table entry with the "existence bit" set to 0 is made, a page fault occurs and it becomes necessary for the OS to allocate a corresponding page frame and load data on a real memory. In such a case, in the UNIX OS, for example, a position of a corresponding data on a hard disk is specified by referring to a table of i-node, etc. in a file system, and a necessary amount of data are transferred from the hard disk to the real memory.
Here, in order to learn the position of the data on the hard disk efficiently, an information on a sector number, etc. on the hard disk at which the data are stored can be written into the page table entry, so that the overhead caused by referring to a table of i-node, etc. can be eliminated.
Next, a case of making accesses to resources such as files which are not present in the own computer will be described.
Among the resources such as files which are not present in the own computer, for a part that had transferred through a network in the past from other computer which owns that resource, if cached data is remaining on the real memory, the "existence bit" of the corresponding page table entry is 1, so that an access to this data can be made by making an access to the real memory by using the frame number written in the page table entry.
However, for a part which has not been transferred before, or when cached data is not remaining on the real memory, the "existence bit" of the corresponding page table entry is 0, so that it is necessary to transfer the corresponding part from the computer which owns that resource through a network, and load corresponding data on the real memory.
In such a case, every time an access is to be made to a virtual frame that has not been transferred before, it has conventionally been necessary to identify the computer which owns that resource and request a transfer of the corresponding data, by referring to various tables such as a resource table (which indicates which computer has which resource) and a network routing table (which indicates which path should be taken in order to make a communication with a target computer) to access another computer through a network, so that there has been a problem of a poor efficiency.
Thus, conventionally, in order to realize a data transfer between memory spaces shared among computers in a distributed computer system, it has been necessary to provide a dedicated hardware, and it has been disadvantageous in terms of costs and flexibility of the system configuration.
Moreover, when a plurality of computers are connected by using an existing network, the data transfer becomes time-consuming, and an efficient memory space sharing has been difficult.